const person = {
    name: "小明",
};
const person2 = person;
person2.name = "漂亮阿姨";
//漂亮阿姨
console.log(person.name);
const person = {
      name: "小明",
};
function fn(obj) {
  obj.name = "漂亮阿姨";
}
fn(person);
//漂亮阿姨
console.log(person.name);
當 key 名稱存在於變數中時,可使用中括號取用:
var variable = 'go';
obj[variable]();
const propertyName = "name";
const obj = {
  [propertyName]: "小明",
  姓名: "小華",
  1: 1,
  '❤️': "這是一個 emoji",
  inner: {
    姓名: "內層的物件"
  }
};
console.log(obj);
console.log(obj.test?.name); // undefined,不拋錯
函式屬於物件型別,因此可以使用物件的方式賦值屬性
const fn = function () {};
const fn2 = fn;
fn2.age = 18;
console.dir(fn);
console.log(fn.age);
Number.parseInt 和全域的 parseInt 指向同一個記憶體位置
//100
console.log(Number.parseInt("100元"));
//true
console.log(window.parseInt === Number.parseInt);
//true
console.log(parseInt("100元"));
將內建函數parseInt賦值給一個常數變數"轉數值"。轉數值這個變數就指向parseInt函數
const 轉數值 = parseInt;
console.log(轉數值("100元"));
將 parseInt 指向 null,不影響 Number.parseInt
parseInt = null;
console.log(Number.parseInt("100元"));
函式內直接修改傳入物件的屬性,會影響原物件
const family = {
  name: "小明家",
  Ming: {
    name: "小明",
  },
};
const Ming = family.Ming;
function fn(obj) {
  obj.name = "漂亮阿姨";
}
fn(Ming);
//{name : '漂亮阿姨'}
console.log(Ming);
若函式內重新賦值一個新物件,則不影響原本的物件:
const family = {
  name: "小明家",
  Ming: {
    name: "小明",
  },
};
const Ming = family.Ming;
function fn(obj) {
  obj = {
    name: "杰倫",
  };
  obj.name = "漂亮阿姨";
}
fn(Ming);
console.log(Ming);
常見方法:
const family = {
  name: "小明家",
  Ming: { name: "小明" },
};
const newFamily = { ...family };
newFamily.name = "小華";
newFamily.Ming.name = "漂亮阿姨";
console.log(newFamily);
console.log(family);
const family = {
  name: "小明家",
  member: {
    name: "小明",
  },
};
const newFamily = JSON.parse(JSON.stringify(family));
newFamily.name = "小華家";
newFamily.member.name = "漂亮阿姨";
console.log(family);
console.log(newFamily);
當函式內部 obj = {...},只會改變內部參數的參考,不影響原始物件:
const person = {};
function fn(obj) {
  obj = {
    name: 1,
  };
}
fn(person);
console.log(person);
物件可透過 Object.keys 和 Object.values 使用陣列方法:
const family = {
  Ming: { name: '小明' },
  Jay: { name: '杰倫' },
  Auntie: { name: '漂亮阿姨' }
};
console.log(Object.keys(family)); // ['Ming', 'Jay', 'Auntie']
console.log(Object.values(family)); // [ {...}, {...}, {...} ]
Object.values(family).forEach(item => {
  console.log(item);
});
Object.keys(family).forEach(key => {
  console.log(key);
  console.log(family[key]);
});